A calculator generally comprises a packaged combination of a central processing unit, a read-only memory containing the calculator's built-in instruction set, a random access memory to hold user data and programs, a keyboard for user control of the calculator, and a display to show results to the user. The keyboard contains character keys, for entering data and/or instructions, and immediate-execute keys that permit single keystroke execution of operations.
Calculators differ in their user-interface, i.e., the manner in which the calculator interprets keystrokes and saves or displays results. Of particular interest is the methods by which calculators deal with the evaluation of mathematical expressions. Prior art calculators use variations of three different approaches:
In Reverse Polish Notation calculators, arguments are entered into a fixed-size last in first out stack, and mathematical functions are applied to the topmost arguments. The function value is returned to the top of the stack, where it can then be used as the argument for a subsequent function. This method has the advantages of keystroke efficiency, intermediate results, explicit operator precedence, and uniformity. It has the disadvantage that the order of entry of arguments and operators corresponds to so called Reverse Polish Notation, rather than the more conventional notation of written mathematical expressions.
In direct formula entry calculators, a mathematical expression is entered as a replica of the written form of the expression, then evaluated all at once when the entire expression has been entered. Its primary advantage is the similarity between the written expression and the calculator input. The disadvantages are the inflexibility of the format, the lack of intermediate results of subexpressions, and the lack of a straightforward method of referring to the results of previous evaluations.
So-called algebraic logic calculators intermix the postfix (arguments entered before functions) and infix (functions of two arguments entered between their arguments) syntax of the preceding two methods. Arithmetic functions such as +, -, *, and / are entered between their arguments, to preserve the correspondence with written notation. Functions of one argument are entered after their arguments to permit the display of intermediate results immediately upon the function keystroke. The advantages are similarity with written notation for arithmetic operations and display of intermediate results during expression evaluation. Except for the latter, the disadvantages are the same as for the direct formula entry case.
All prior art calculators, regardless of their general user interface share the common limitation that they are optimized for dealing only with real-valued floating-point numbers within the context of their ordinary mathematical expression evaluation. Furthermore, none have the capability of applying mathematical functions to formal variables or unevaluated expressions.